// 遇到相同元素级属性，以后者（main）为准
// 不返还新Object，而是main改变
export function mergeJSON (minor, main) {

  for (var key in minor) {

    if (main[key] === undefined) {  // 不冲突的，直接赋值
      main[key] = minor[key];
      continue;
    }

    // 冲突了，如果是Object，看看有么有不冲突的属性
    // 不是Object 则以main为主，忽略即可。故不需要else
    if (isJSON(minor[key])) {
      Object.keys(minor[key]).forEach(itemKey =>
        mergeJSON(minor[key], main[key])
      )
    }
    else if (Array.isArray(minor[key])) {
      minor[key].forEach((item, index) => {
        if (isJSON(item)) {
          mergeJSON(minor[key][index], main[key][index])
        }
      })
    }
    else {
      main[key] = minor[key]
    }
  }
}

// 附上工具
export function isJSON(target) {
  return typeof target == "object" && target.constructor == Object;
}
